#ifndef OBJC_LOG_H
#define OBJC_LOG_H

#include <stdarg.h>
#include <sobjc-commons/port.h>

typedef enum OBJC_LOG_LV {
  OBJC_LOG_TRACE = 0,
  OBJC_LOG_DEBUG,
  OBJC_LOG_INFO,
  OBJC_LOG_WARN,
  OBJC_LOG_ERROR,
  OBJC_LOG_FATAL
} OBJC_LOG_LV;

OBJC_EXPORT int objc_get_log_lv();
OBJC_EXPORT void objc_set_log_lv(int);
OBJC_EXPORT void objc_log_msg(int, const char *, ...);
OBJC_EXPORT void objc_log_msgv(int, const char *, va_list);
OBJC_EXPORT void objc_log_trace(const char *, ...);
OBJC_EXPORT void objc_log_debug(const char *, ...);
OBJC_EXPORT void objc_log_info(const char *, ...);
OBJC_EXPORT void objc_log_warn(const char *, ...);
OBJC_EXPORT void objc_log_error(const char *, ...);
OBJC_EXPORT void objc_log_fatal(const char *, ...);

#endif /* OBJC_LOG_H */
